package py.progweb.sgc.manager.impl;

import java.util.Date;
import java.util.List;

import javax.annotation.security.PermitAll;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.jws.WebService;

import py.progweb.sgc.manager.ABMManagerLocal;
import py.progweb.sgc.manager.PagosFacadeLocal;
import py.progweb.sgc.manager.exceptions.ServiceException;
import py.progweb.sgc.model.Cajero;
import py.progweb.sgc.model.Factura;
import py.progweb.sgc.model.Pago;
import py.progweb.sgc.model.RegistroPago;

@WebService(name="PagosWS")
@Stateless
public class PagosWS{
	
	@EJB
	PagosFacadeLocal mgrPago;
	@EJB
	ABMManagerLocal mgr;
	
	@PermitAll
	public String insertarPagos(List<Pago> pagos) throws ServiceException{
		// TODO Auto-generated method stub
		//return "Hola";
		RegistroPago registroPago;
		String message = "Se han insertado los pagos exitosamente.";
		for(Pago item: pagos){
			/*Crear un nuevo pago*/
			Pago nuevo = new Pago();
			Factura nuevaFactura= (Factura)mgr.buscar(Factura.class, item.getFactura().getCodFacturaPk());
			if (nuevaFactura == null)
				throw new ServiceException("No existe la factura " + item.getFactura().getCodFacturaPk());
			nuevo.setFactura(nuevaFactura);
			Cajero nuevoCajero = (Cajero)mgr.buscar(Cajero.class, item.getCajero().getCodCajeroPk());
			if(nuevoCajero == null)
				throw new ServiceException("No existe el cajero " + item.getCajero().getCodCajeroPk());
			nuevo.setCajero(nuevoCajero);
			nuevo.setFecha(new Date());
			nuevo.setMonto(item.getMonto());
			nuevo.setEstado("abierto");
			/*Crear el registro del pago*/
			registroPago = new RegistroPago();
			registroPago.setFecha(new Date());
			try{
				mgrPago.guardarPago(nuevo);
				registroPago.setPago(nuevo);
				registroPago.setExito(true);
				mgr.guardar(registroPago);
			}catch(ServiceException e){
				e.printStackTrace();
				registroPago.setExito(false);
				registroPago.setMensajeError(e.getMessage());
				mgr.guardar(registroPago);
				message = "Han habido problemas en el registro de los pagos." + e.getMessage();
			}
		}
		return message;
	}

}
